/*
 * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.lang;

import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;

/**
 * 指示应该在注解元素（以及注解元素中包含的所有程序元素）中抑制指定的编译器警告。
 * 请注意，在给定元素中抑制的警告集合是在所有包含元素中抑制的警告的超集。
 * 例如，如果您注解一个类以抑制一个警告，并注解一个方法以抑制另一个警告，
 * 那么这两个警告都将在该方法中被抑制。
 *
 * <p>作为样式问题，程序员应该始终在最深层嵌套且有效的元素上使用此注解。
 * 如果您想在特定方法中抑制警告，您应该注解该方法而不是其类。
 *
 * @author Josh Bloch
 * @since 1.5
 * @jls 4.8 Raw Types
 * @jls 4.12.2 Variables of Reference Type
 * @jls 5.1.9 Unchecked Conversion
 * @jls 5.5.2 Checked Casts and Unchecked Casts
 * @jls 9.6.3.5 @SuppressWarnings
 */
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
    /**
     * 要在注解元素中由编译器抑制的警告集合。允许重复名称。
     * 名称的第二次和后续出现将被忽略。存在无法识别的警告名称<i>不是</i>错误：
     * 编译器必须忽略它们无法识别的任何警告名称。但是，如果注解包含无法识别的警告名称，
     * 编译器可以自由地发出警告。
     *
     * <p> 字符串 {@code "unchecked"} 用于抑制未检查的警告。
     * 编译器供应商应该记录他们与此注解类型一起支持的其他警告名称。
     * 鼓励他们合作以确保相同的名称在多个编译器中工作。
     * @return 要抑制的警告集合
     */
    String[] value();
}
